package com.campus.campusdelivery.service;

import com.campus.campusdelivery.dto.MerchantDto;
import com.campus.campusdelivery.dto.MerchantUpdateRequest;
import com.campus.campusdelivery.constant.MerchantStatus;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface MerchantService {
    
    MerchantDto getMerchantById(Long id);
    
    MerchantDto getMerchantByUserId(Long userId);
    
    Page<MerchantDto> getAllMerchants(String name, Long categoryId, Pageable pageable);
    
    Page<MerchantDto> getMerchantsByStatus(MerchantStatus status, Pageable pageable);
    
    List<MerchantDto> getOpenMerchants();
    
    MerchantDto updateMerchant(Long userId, MerchantUpdateRequest request);
    
    void updateMerchantStatus(Long id, MerchantStatus status, String rejectReason);
    
    void toggleMerchantOpenStatus(Long userId);
    
    void deleteMerchant(Long id);
}
